跳到主要内容

Euclidean 算法

阐述

问题

给定正整数 a,ba,b,求出 gcd(a,b)\gcd(a,b),并且找到 x,yx,y 使得 ax+by=gcd(a,b)ax+by=\gcd(a,b)

算法

r0=ar1=bs0=1s1=0t0=0t1=1ri+1=ri1qiri and 0ri+1<ri( this defines qi)si+1=si1qisiti+1=ti1qiti\begin{aligned} r_{0} &=a & r_{1}=b \\ s_{0} &=1 & s_{1}=0 \\ t_{0} &=0 & t_{1}=1 \\ & \vdots & \vdots \\ r_{i+1} &=r_{i-1}-q_{i} r_{i} & \text { and } 0 \leq r_{i+1}<\left|r_{i}\right| &\left(\text { this defines } q_{i}\right) \\ s_{i+1} &=s_{i-1}-q_{i} s_{i} & & \\ t_{i+1} &=t_{i-1}-q_{i} t_{i} & & \\ & \vdots & & \end{aligned}

rk+1=0r_{k+1}=0 时,rkr_k 即为最大公约数,且 rk=ask+btkr_k=as_k+bt_k

实例

性质

相关内容

参考文献